package com.sodimac.v2s.business
{
 	import com.adobe.cairngorm.business.ServiceLocator;
 	
 	import mx.collections.ArrayCollection;
 	import mx.rpc.AsyncToken;
 	import mx.rpc.IResponder;
 	import mx.rpc.soap.WebService;
	
	
	public class SfpcProdDelegate
	{

		private var service:WebService;
		private var responder:IResponder;		
		
		public function SfpcProdDelegate(responder:IResponder)
		{
			this.service = ServiceLocator.getInstance().getWebService("wsSolicitudFPCorporativa");
			this.responder = responder;
		}
	
		
		public function ConsultaPedidoCorp(cabecera:Object, 
										   idPedidoCorp:Number):void
		{

			trace("SfpcProdDelegate.ConsultaPedidoCorp ("+ idPedidoCorp +")");
			var payload:Object = new Object();
			payload.idPedidoCorp = idPedidoCorp;
			
			var call:AsyncToken = service.consultaPedidoCorp(cabecera, payload);
			call.addResponder( responder );
		}

		public function ConsultaResumen(cabecera:Object, 
										idEmpresa:String,
										idPedidoCorp: Number):void
		{

			trace("SfpcProdDelegate.ConsultaResumen ("+ idPedidoCorp +")");
			var payload:Object = new Object();
			payload.idEmpresa = idEmpresa;
			payload.idPedidoCorp = idPedidoCorp;
			
			var call:AsyncToken = service.consultaResumen(cabecera, payload);
			call.addResponder( responder );
		}


		public function ConsultaPedidoCorpProductoHom(cabecera:Object, 
													  idEmpresa: String,  
												      idPedidoCorp: Number,
												      igRequest:Number):void
		{
			trace("SfpcProdDelegate.ConsultaPedidoCorpProductoHom ("+ idPedidoCorp + " "+ idEmpresa +")");
			var payload:Object = new Object();
			payload.idEmpresa = idEmpresa;
			payload.idPedidoCorp = idPedidoCorp;
			payload.iG = igRequest;
									
			var call:AsyncToken = service.consultaPedidoCorpProductoHom(cabecera,payload);
			call.addResponder( responder );
		}

		public function ConsultaPedidoCorpProductoPais(cabecera:Object, 
													  idEmpresa: String,  
												      idPedidoCorp: Number,
												      igRequest: Number):void
		{
			trace("SfpcProdDelegate.ConsultaPedidoCorpProductoPais("+ idPedidoCorp + " "+ idEmpresa +")");
			var payload:Object = new Object();
			payload.idEmpresa = idEmpresa;
			payload.idPedidoCorp = idPedidoCorp;
			payload.iG = igRequest;
									
			var call:AsyncToken = service.consultaPedidoCorpProductoPais(cabecera,payload);
			call.addResponder( responder );
		}

		public function ConsultaPedidoCorpProductoHomPrice(cabecera:Object, 
													  idEmpresa: String,  
												      idPedidoCorp: Number,
												      igRequest: Number):void
		{
			trace("SfpcProdDelegate.ConsultaPedidoCorpProductoHom PRICE ("+ idPedidoCorp + " "+ idEmpresa +")");
			var payload:Object = new Object();
			payload.idEmpresa = idEmpresa;
			payload.idPedidoCorp = idPedidoCorp;
			payload.iG = igRequest;
									
			var call:AsyncToken = service.consultaPedidoCorpProductoHom(cabecera,payload);
			call.addResponder( responder );
		}

		public function ConsultaPedidoCorpProductoPaisPrice(cabecera:Object, 
													  idEmpresa: String,  
												      idPedidoCorp: Number,
												      igRequest: Number):void
		{
			trace("SfpcProdDelegate.ConsultaPedidoCorpProductoPais PRICE ("+ idPedidoCorp + " "+ idEmpresa +")");
			var payload:Object = new Object();
			payload.idEmpresa = idEmpresa;
			payload.idPedidoCorp = idPedidoCorp;
			payload.iG = igRequest;
									
			var call:AsyncToken = service.consultaPedidoCorpProductoPais(cabecera,payload);
			call.addResponder( responder );
		}





		public function GrabarPedidoCorp(cabecera: Object, idPedidoCorp: Number, idEmpresa: String,
										 idProveedor: String,  strEstado: String, strVersion: String, 
										 productosCorpArr: ArrayCollection,
										 productosNacArr:ArrayCollection,
										 paisesCorr:Array,
										 paisesFormaEnvio:Array):void
		{
			trace("SfpcProdDelegate.GrabarPedidoCorp (PedidoCorp="+ idPedidoCorp +")");
			var prodCorp:Array = new Array();
			var prodNac:Array = new Array();
			var j:int=0, i:int=0;
			var payload:Object = new Object();
			var deta:Object = new Object();
			var info:Object = new Object();
			var tieneDetalle:Boolean = false;
			info.idPedidoCorp = idPedidoCorp;
			info.idEmpresa = idEmpresa;
			info.idProveedorCorp = idProveedor;
			info.estado = strEstado;
			info.version = strVersion;
			
			//set encabezado
			payload.encabezadoPedidoCorp = info;
		
			//productos CORP modificados
			if ( (productosCorpArr)  && (productosCorpArr.length >0))
			{
				for (j=0; j<productosCorpArr.length;j++)
				{
					var objCorp:Object = new Object();
					objCorp.idProductoCorp = productosCorpArr[j]["vin"];
					objCorp.precioFinal = productosCorpArr[j]["precio_final"];  
					objCorp.cantFinal = productosCorpArr[j]["sub_quantity"];
					objCorp.idProblema = productosCorpArr[j]["id_problema"];
					objCorp.moq = productosCorpArr[j]["moq"];
					objCorp.omitido = productosCorpArr[j]["omitido"];
					
					var arregloPaises:Array = productosCorpArr[j]["paises"];
					var paisesArr:Array = new Array();
					for (i=0; i<arregloPaises.length;i++)
					{
						var producto:Object = new Object();
						producto.codigo = arregloPaises[i]["pais"];
						producto.sku = arregloPaises[i]["sku"];
						producto.cantFinal = arregloPaises[i]["cantidad"];
						producto.precioFinal = arregloPaises[i]["precio"];
						paisesArr.push(producto);						
					}
					objCorp.productosPaisCorp = paisesArr;
					
				prodCorp.push(objCorp);
				}
				
			}

			//productos NAC modificados
			if ( (productosNacArr)  && (productosNacArr.length >0))
			{
				
				var objProducto:Object;
				var array_cl:Array = new Array();
				var array_co:Array = new Array();
				var array_pe:Array = new Array();
				var array_ar:Array = new Array();
			
				//CHILE
				i=0;
				for (j=0; j<productosNacArr.length;j++)
				{
					if (productosNacArr[j]["idPais"] == "CL")
					{
						objProducto = new Object();
						objProducto.sku =  productosNacArr[j]["sku"];
						objProducto.cantFinal =  productosNacArr[j]["cantidad"];
						objProducto.precioFinal =  productosNacArr[j]["precio"];
						objProducto.idProblema =  productosNacArr[j]["idProblema"];
						objProducto.omitido = productosNacArr[j]["omitido"];
						
						array_cl[i] = objProducto;
						i++;
					}	
				}
				if (array_cl.length >0)
				{
					var obj_cl:Object = new Object();
					obj_cl.codigo = "CL";
					obj_cl.producto = array_cl;
					prodNac.push(obj_cl);
				}

				//COLOMBIA
				i=0;
				for (j=0; j<productosNacArr.length;j++)
				{
					if (productosNacArr[j]["idPais"] == "CO")
					{
						objProducto = new Object();
						objProducto.sku =  productosNacArr[j]["sku"];
						objProducto.cantFinal =  productosNacArr[j]["cantidad"];
						objProducto.precioFinal =  productosNacArr[j]["precio"];
						objProducto.idProblema =  productosNacArr[j]["idProblema"];
						objProducto.omitido = productosNacArr[j]["omitido"];
						
						array_co[i] = objProducto;
						i++;
					}	
				}
				if (array_co.length >0)
				{				
					var obj_co:Object = new Object();
					obj_co.codigo = "CO";
					obj_co.producto = array_co;
					prodNac.push(obj_co);
				}	
				
				
				//PERU
				i=0;
				for (j=0; j<productosNacArr.length;j++)
				{
					if (productosNacArr[j]["idPais"] == "PE")
					{
						objProducto = new Object();
						objProducto.sku =  productosNacArr[j]["sku"];
						objProducto.cantFinal =  productosNacArr[j]["cantidad"];
						objProducto.precioFinal =  productosNacArr[j]["precio"];
						objProducto.idProblema =  productosNacArr[j]["idProblema"];
						objProducto.omitido = productosNacArr[j]["omitido"];
						
						array_pe[i] = objProducto;
						i++;
					}	
				}
				if (array_pe.length >0)
				{
					var obj_pe:Object = new Object();
					obj_pe.codigo = "PE";
					obj_pe.producto = array_pe;
					prodNac.push(obj_pe);
				}	
				
				
				//ARGENTINA
				i=0;
				for (j=0; j<productosNacArr.length;j++)
				{
					if (productosNacArr[j]["idPais"] == "AR")
					{
						objProducto = new Object();
						objProducto.sku =  productosNacArr[j]["sku"];
						objProducto.cantFinal =  productosNacArr[j]["cantidad"];
						objProducto.precioFinal =  productosNacArr[j]["precio"];
						objProducto.idProblema =  productosNacArr[j]["idProblema"];
						objProducto.omitido = productosNacArr[j]["omitido"];
						
						array_ar[i] = objProducto;
						i++;
					}	
				}
				if (array_ar.length >0)
				{				
					var obj_ar:Object = new Object();
					obj_ar.codigo = "AR";
					obj_ar.producto = array_ar;
					prodNac.push(obj_ar);
				}					
				
			}
			
			if	(prodCorp.length > 0)
			{
				deta.productosCorp = prodCorp;
				tieneDetalle = true;
			}
			if	(prodNac.length > 0)
			{
				deta.productosCompraNac = prodNac;
				tieneDetalle = true;
			}			
			if	((paisesCorr)   && (paisesCorr.length > 0))
			{
				var obj:Object = new Object();
				obj.pais = paisesCorr;
				deta.paisesCorreccion = obj;
				tieneDetalle = true;
			}
			if ((paisesFormaEnvio) && (paisesFormaEnvio.length > 0))
			{
				var objEnv:Object = new Object();
				var paisesEnv:Array = new Array();
				paisesEnv = paisesFormaEnvio;
				objEnv.tipoEnvioPais = paisesEnv;
				deta.pedidoEnvioPais = objEnv;
				tieneDetalle = true;
			}

			if (tieneDetalle)
			{
				payload.detallePedidoCorp = deta;	
			}			
			
         /*
             var qName:QName = new QName("form");
            var xmlDocument:XMLDocument = new XMLDocument();
            var simpleXMLEncoder:SimpleXMLEncoder = new SimpleXMLEncoder(xmlDocument);
            var xmlNode:XMLNode = simpleXMLEncoder.encodeValue(payload, qName, xmlDocument);
            var xml2:XML = new XML(xmlDocument.toString());
			trace("---------------------------");
			trace(xml2.toString());	
			trace("---------------------------");	 	
			*/
			
			var call:AsyncToken  = service.grabaPedidoCorpPaisProducto(cabecera, payload);
			call.addResponder( responder );
		}
		

	
		

	}
}
	